Skip to content

sync(locales): bring en/es up to date with rewritten ru theory#851

Merged
fey merged 21 commits into
mainfrom
sync-en-es-locales
Jun 18, 2026
Merged

sync(locales): bring en/es up to date with rewritten ru theory#851
fey merged 21 commits into
mainfrom
sync-en-es-locales

Conversation

@fey

@fey fey commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Что и зачем

После крупного обновления ru-теории (alignment с exercises-python, baseline 9a7fb26) локали en и es системно отстали: правки вносились в ru/, а en/es не обновлялись. По диагностике (git diff --numstat 9a7fb26 HEAD -- <lesson>/ru/README.md <lesson>/en/README.md) нашлось 43 урока с переписанным ru и нулевыми правками en/es, плюс 1 урок без локалей вовсе (45-logic/17-bool-strings).

Что сделано

  • Переведены en и es (README.md, EXERCISE.md, data.yml) и пересобран легаси консолидированный description.es.yml для 44 уроков в 9 модулях.
  • Создан отсутствующий урок 45-logic/17-bool-strings (en/, es/, description.es.yml).
  • Нейтрализация русских строк в общих index.js/test.js. Эти файлы одни на все локали (spec.yml), поэтому русский вывод/значения/комментарии в них заменены на языко-нейтральные английские синхронно во всех локалях, включая ru-доки (~23 урока, в т.ч. вне переводного бэклога: 31-advanced-strings, 40-define-functions, 35-calling-functions/135).
  • Картинки ![...](./assets/...) в en/es опущены (конвенция: эталонный exercises-python en/es картинок не содержит; ассеты только в ru/assets).
  • Исправлена опечатка Self-сheck (кириллическая с) в 30-variables/13-variables-naming.

Попутно: починка CI

В make code-lint (tsc --build) уже падал на main (коммит «Strengthen tests»), не связано с локализацией — исправлено:

  • 10-basics/20-comments/test.js: // @ts-check// @ts-nocheck (node:fs при types: []) + перенос длинной строки под biome.
  • 33-data-types/45-undefined/test.js: optional chaining firstCall?.[0] против TS18048.

Проверка

Полный make check (description-lint + tsc --build + biome check + schema-validate + markdown-lint + все vitest) — зелёный. Кириллицы в en/es и в index.js/test.js по всему курсу не осталось.

🤖 Generated with Claude Code

fey and others added 21 commits June 17, 2026 19:04
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy consolidated description.es.yml for all 5 lessons (hello-world,
comments, instructions, testing, syntax-errors) after the ru theory
rewrite. Images omitted in en/es per course convention; example string
localized in hello-world.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace Russian functional strings baked into the locale-independent
index.js/test.js (and their references across ru/en/es docs and the
legacy description.es.yml) with language-neutral English so en/es
learners no longer see/print Russian:
- instructions: order-status output strings
- syntax-errors: success message
- comments: TODO marker; test internal comment

Illustrative README-only comments translated per locale. vitest green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…test

The test reads the source via node:fs but tsconfig sets types: [] (no
Node typings), so tsc --build failed (TS2591). Switch to @ts-nocheck
matching the 350-type-annotations pattern, and wrap the long
readFileSync call to satisfy the biome formatter.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy consolidated description.es.yml for all 7 lessons (basic,
operator, commutativity, composition, priority, float, linting) after
the ru theory rewrite. Code/output left intact; MDN/Wikipedia tip links
localized per locale.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy description.es.yml for all 4 lessons (quotes, escape-characters,
string-concatenation, encoding) after the ru theory rewrite.

escape-characters: the Russian demo string baked into index.js/test.js
is replaced with a language-neutral English one, synced across ru/en/es
docs so the shared exercise no longer requires printing Russian. vitest green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy description.es.yml for all 8 lessons (definition, change,
variables-naming, variables-expressions, variable-concatenation,
naming-style, magic-numbers, constants) after the ru theory rewrite.
This also resolves the Cyrillic-c typo in variables-naming Self-check.

Russian functional strings baked into shared index.js/test.js are
neutralized to English (change: in transit/delivered; concatenation:
Anna/Hello/order strings; magic-numbers: Boxes in stock), synced across
ru/en/es docs. vitest 8/8 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy description.es.yml for the two rewritten lessons
(primitive-data-types, data-types-weak-typing).

45-undefined/test.js: guard firstCall with optional chaining to clear
the TS18048 build error and neutralize its Russian internal comment.
vitest 5/5 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy description.es.yml for the 4 rewritten lessons (call,
calling-functions-expression, variadic-parameters, deterministic).

135-default-params/index.js: Russian inline comments neutralized to
English in the shared exercise template. vitest 5/5 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy description.es.yml for bool-type, logical-operators and
logical-negation after the ru theory rewrite.

17-bool-strings: the lesson previously had only the ru locale; create
en/, es/ and the legacy description.es.yml from the ru source. vitest 6/6 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy description.es.yml for all 4 lessons (if, if-else, else-if,
ternary-operator) after the ru theory rewrite. vitest 5/5 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-translate README/EXERCISE/data.yml for en and es and rebuild the
legacy description.es.yml for the 6 rewritten lessons (while,
aggregation-numbers, aggregation-strings, iteration-over-string,
return-from-loops, for) after the ru theory rewrite.

iteration-over-string/index.js: Russian biome-ignore comment neutralized
to English. vitest 10/10 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…log)

Lessons outside the en/es resync backlog still carried Russian baked into
the locale-independent index.js/test.js. Replace with language-neutral
English, synced across ru/en/es docs:

- 31-advanced-strings/25-interpolation: greeting/order output string
- 31-advanced-strings/90-multiline-strings: email body (es exercise gains
  the expected-output block it was missing)
- 40-define-functions/150-return: truncate test inputs
- 40-define-functions/350-type-annotations: @ts-nocheck note and the
  JSDoc assertion messages

vitest 11/11 green across both modules.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@fey fey merged commit a6b56a0 into main Jun 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant